package cn.csc.module.order.dal.dataobject.order;

import cn.csc.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 订单信息 DO
 *
 * @author liuchuang
 */
@TableName("`order`")
@KeySequence("order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderDO extends BaseDO {

    /**
     * 订单ID
     */
    @TableId
    private BigInteger id;
    /**
     * 客户编号
     */
    private BigInteger userId;
    /**
     * 用户昵称
     */
    private String nickName;
    /**
     * 用户手机号
     */
    private String memberPhone;
    /**
     * 商户编码
     */
    private BigInteger shopId;
    /**
     * 商户名称
     */
    private String shopName;
    /**
     * 订单状态 0未付款,1已付款,2已发货,3已签收,-1退货申请,-2退货中,-3已退货,-4取消交易 -5撤销申请
     */
    private int orderStatus;
    /**
     * 用户售后状态 0 未发起售后 1 申请售后 -1 售后已取消 2 处理中 200 处理完毕
     */
    private int afterStatus;
    /**
     * 单个orderItem的配送类型1.快递物流(默认）,2.送货上门,3.自提
     */
    private int deliveryType;
    /**
     * 总值
     */
    private BigDecimal total;

    /**
     * 订单商品总数
     */
    private Integer allCount;
    /**
     * 付款时间
     */
    private LocalDateTime payTime;
    /**
     * 发货时间
     */
    private LocalDateTime deliveryTime;
    /**
     * 完成时间
     */
    private LocalDateTime finallyTime;
    /**
     * 结算时间
     */
    private LocalDateTime settledTime;
    /**
     * 取消时间
     */
    private LocalDateTime cancelTime;
    /**
     * 是否已支付，1.已支付0.未支付
     */
    private Integer isPayed;
    /**
     * 订单关闭原因 1-超时未支付 4-买家取消 15-已通过货到付款交易
     */
    private Integer closeType;
    /**
     * 用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除
     */
    private Integer deleteStatus;
    /**
     * 订单版本号，每处理一次订单，版本号+1
     */
    private Integer version;
    /**
     * 用户订单地址id
     */
    private BigInteger orderAddrId;
    /**
     * 支付渠道 0余额 1微信 2支付宝 3通联 4拉卡拉 5建行龙支付
     */
    private String payChannel;
    /**
     * 订单支付单号
     */
    private String outTradeNo;
    /**
     * 第三方支付流水号
     */
    private String escrowTradeNo;
    /**
     * 是否是套餐
     */
    private String isPackage;
    /**
     * 是否是积分产品
     */
    private String isIntegral;
    /**
     * 产品名称，冗余字段
     */
    private String spuName;
    /**
     * 发货附件
     */
    private String  deliveryFile;

    /**
     * 商户订单编号, 商户端生成
     */
    private String merchantOrderId;

    /**
     * 租户ID
     */
    private Integer tenantId;
    /**
     * 订单类型 0普通订单，1采购商订单
     */
    private Integer orderType;
    /**
     * 实付金额
     */
    private BigDecimal actualAmount;
    /**
     * 购物卡支付金额
     */
    private BigDecimal cardPayAmount;

    /**
     * 支付类型，0微信支付、1购物卡支付、2结合支付
     */
    private Integer payType;
}
